package cn.lkk.samples.lang.fundamental.Arrays;

import cn.lkk.samples.lang.inheritance.basic.Employee;
import cn.lkk.samples.lang.inheritance.basic.Manager;

import java.util.Arrays;

/**
 * 演示数组的基本使用
 */
public class Basic {
    public static void main(String[] args) {
        copy();
    }

    /**
     * 演示数组的基本使用，包括定义、初始化等
     */
    public static void basic() {

        //声明数组变量
        int[] c;
        boolean d[];

        //创建一个数组
        c = new int[10];

        //数组长度可以是变量
        int dLength = 10;
        d = new boolean[dLength];

        //数组创建之后会被赋予默认值
        System.out.println(Arrays.toString(c));
        System.out.println(Arrays.toString(d));

        //获得数组长度
        int cLength = c.length;
    }

    /**
     * 演示数组初始化器和匿名数组
     */
    public static void ArrayInitializerAndAnonymousArray() {

        //使用数组初始化器创建一个数组，该数组的创建不再需要使用new操作符。只能用于数组初始化赋值。
        int[] smallPrimes = {2, 3, 5, 7, 11};

        //构造一个匿名数组，将其赋值给一个数组变量。可以用于数组的非初始化赋值。
        smallPrimes = new int[]{2, 3, 5, 7, 11};

        //你们数组是以下语句的缩写
        int[] anonymous = {2, 3, 5, 7, 11};
        smallPrimes = anonymous;
    }

    /**
     * 关于数组的排序、赋值、扩充、打印等内容，参考 {@link cn.lkk.samples.apis.ArraysAPI}
     */
    public static void other() {

    }

    /**
     * 演示数组的复制
     */
    public static void copy() {
        int[] original = {1, 2, 2, 3, 4};
        int[] copy = original.clone();
        copy[2] = 5;

        System.out.println("original="+Arrays.toString(original));
        System.out.println("copy="+Arrays.toString(copy));
    }
}
